package com.kgc.crow.distributioncrowdcommon.api;

import com.kgc.crow.distributioncrowdcommon.pojo.ResultEntity;
import com.kgc.crow.distributioncrowdcommon.pojo.TypePO;
import com.kgc.crow.distributioncrowdcommon.vo.MemberConfirmInfoVO;
import com.kgc.crow.distributioncrowdcommon.vo.ProjectVO;
import com.kgc.crow.distributioncrowdcommon.vo.ReturnVO;
import com.kgc.crow.distributioncrowdcommon.vo.TagVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient("DISTRIBUTION-CROWD-PROJECT-MANAGER")
public interface ProjectManagerService {

    @RequestMapping("/project/manager/initCreation")
    public ResultEntity<ProjectVO> initCreation(
            @RequestParam("memberSignToken") String memberSignToken);

    @RequestMapping("/project/manager/save/head/picture/path")
    public ResultEntity<String> saveHeadPicturePath(
            @RequestParam("memberSignToken") String memberSignToken,
            @RequestParam("projectTempToken") String projectTempToken,
            @RequestParam("headerPicturePath") String headerPicturePath
    );

    @RequestMapping("/project/manager/save/detail/picture/path/list")
    public ResultEntity<String> saveDetailPicturePathList(
            @RequestParam("memberSignToken") String memberSignToken,
            @RequestParam("projectTempToken") String projectTempToken,
            @RequestParam("detailPicturePathList") List<String> detailPicturePathList
    );

    @RequestMapping("/project/manager/save/project/information")
    public ResultEntity<String> saveProjectInformation(@RequestBody ProjectVO projectVOFront);

    @RequestMapping("/project/manager/save/return/vo")
    public ResultEntity<String> saveReturnVO(@RequestBody ReturnVO returnVO);

    @RequestMapping("/project/manager/save/member/confirm/info/vo")
    public ResultEntity<String> saveMemberConfirmInfoVO(@RequestBody MemberConfirmInfoVO memberConfirmInfoVO);

    @RequestMapping("/project/manager/save/whole/project")
    public ResultEntity<String> saveWholeProject(
            @RequestParam("memberSignToken") String memberSignToken,
            @RequestParam("projectTempToken") String projectTempToken);

    @RequestMapping("/project/manager/select/all/type")
    public ResultEntity<List<TypePO>> selectAllType();

    @RequestMapping("/project/manager/select/all/tag")
    public ResultEntity<List<TagVO>> slectsAllTag();
}
